class MainController extends CController
{
  public $layout = 'header';

  public function actionIndex($title="No title sent")
  {
    self::setPageTitle($title);
    $this->render("login", array("unix" => time()) );
  }
 
  public function actionHello($name = "Guest")
  {
    echo "<u><b>Hello</b></u> function is availabe now.<br />Your name: " . $name;
  }
}


זה הקוד שלי, בפונקציית האינדקס, יש פרמטר בשם title.
מה שאני רוצה לעשות זה פשוט לשלוח לפונקציה הזו שם של כותרת כמובן, וה- layout יקבל את השם.
איך אני יכול לשלוח?

5 תשובות

avatar ענה intval ב 28 לינואר 2012 #

מספיק שתגלוש לכתובת
localhost/main/index/title/hello
והפרמטר title יקבל את הערך hello

אמור לעבוד גם בלי main/index
וגם אם סתם תעביר אותם בכתובת בתור
?title=hello

avatar ענה משתמש_95368 ב 28 לינואר 2012 #

אז אין איזשהו מצב שבו אני יכול לשלוח ערך קבוע לפונקציה index, למשל מהדף index.php ?
(אני לא מדבר על קלט). ועוד שאלה קטנה: פרמטר בתוך ACTIONים מתייחסים לקלט GET ?

avatar ענה intval ב 28 לינואר 2012 #

כן, הם מתייחסים ל get.
את השאלה הראשונה לא הבנתי.

אין שום סיבה שלכל העמודים (לכל הקונטרולרים) שלך יהיה את אותו ה title
אבל להגדיר title דיפולטי אתה יכול פשוט למחלקה Controller
שממנה כל הקונטרולרים שלך צריכים לירוש.

class Controller extends CController
{
public $pageTitle = 'dfefault title';
}

ואז בכל האקשנים שלא הגדרת בהם TITLE - ישתמשו בדיפולטי.

avatar ענה משתמש_95368 ב 28 לינואר 2012 #

קודם כל תודה רבה.
אני ינסה לפשט את זה כמה שיותר...
יש את הדף של הקונטרולר שזה MainController.php ויש את דף האינדקס index.php.
יש אפשרות לשלוח כותרת כפרמטר לפונקציה actionIndex שבתוך הקונטרולר של main,
מהדף index.php ללא GET? כלומר בצורה הבאה:

actionIndex("a title here");

?

avatar ענה intval ב 28 לינואר 2012 #

לא. index.php עושה רק דבר אחד - מפעיל את הפריימוורק.
לא ברור לי בשביל מה אתה עושה את זה בכלל? תשים ערך ברירת מחדל אם אתה רוצה.